/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pkg1ifxArchivos;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

/**
 *
 * @author gabriel
 */
public class caTemplate {

    //Strail 13 ene 2012
    public int Id=0;// El ID del template en la base de datos
    //public String TemplateId="";//En este momento estoy mamao asi que estas variables quedan publicas
    public long tamano=0;
    private byte[] template = new byte[0];
    private int identificador=-1; //-1- No usa, HUELLA #Dedos(01234,56789), IRIS(1,2)
    public byte[] getTemplate()
    {
        return template;
    }
    public void setTemplate(byte[] dato)
    {
        template=dato;
    }

    public Object getTemplateObject()
    {
       return toObject(template); 
    }
    public void agregaOTemplate(Object obj)
    {
        agregaDatosTemplate(toByteArray(obj));
    }
    public void agregaDatosTemplate(byte[] dato)
    {

        byte[] stmps = new byte[template.length];
        System.arraycopy(template, 0, stmps, 0, template.length);
        template=new byte[template.length+dato.length];
        System.arraycopy(stmps, 0, template, 0, stmps.length);

        System.arraycopy(dato, 0, template, stmps.length,dato.length);

    }

    /**
     * Retorna el identificador asignado
     * con esta informacion se indica si el
     * template es de tipo -1-No hay identificador,  HUELLA #Dedos(01234,56789), IRIS(1,2)
     * @return 
     */
    public int getIdentificador()
    {
        return identificador;
    }
    /**
     * Asigna el tipo de template que se esta creando, con esta informacion se indica si el
     * template es de tipo -1-No hay identificador,  HUELLA #Dedos(01234,56789), IRIS(1,2)
     * 
     * @param dato es un entero entre 0y9 que indica el uso del template segun su funcion
     * para una huella los 10 dedos para el IRIS el OJO
     */
    public void setIdentificador(int dato)
    {
        identificador=dato;
    }
    /**
     * Para la serializacion de objetos
     */
    
    private byte[] toByteArray (Object obj)
    {
      byte[] bytes = null;
      ByteArrayOutputStream bos = new ByteArrayOutputStream();
      try {
        ObjectOutputStream oos = new ObjectOutputStream(bos); 
        oos.writeObject(obj);
        oos.flush(); 
        oos.close(); 
        bos.close();
        bytes = bos.toByteArray ();
      }
      catch (IOException ex) {
        //TODO: Handle the exception
      }
      return bytes;
    }

    private Object toObject (byte[] bytes)
    {
      Object obj = null;
      try {
        ByteArrayInputStream bis = new ByteArrayInputStream (bytes);
        ObjectInputStream ois = new ObjectInputStream (bis);
        obj = ois.readObject();
      }
      catch (IOException ex) {
        //TODO: Handle the exception
      }
      catch (ClassNotFoundException ex) {
        //TODO: Handle the exception
      }
      return obj;
    }

}
